The ability to stream images or other content from a server to multiple clients is a quickly-growing need. Multi-media applications that utilize streaming images continue to increase in popularity and include video games, navigation software, streaming movies or video, and the like. These applications, however, often are network-resource intensive and result in bandwidth bottlenecks and network slowdowns when content providers use them to distribute content, particularly to large numbers of users. As the popularity of streaming image applications continues to increase, the network performance problems associated with them will be exacerbated.
To reduce the impact of streaming image content on a network, content providers often compress their images before transmission. The client system must then decompress the image upon receipt before displaying the image to a user. Depending on the level of compression, network traffic can be significantly decreased by utilizing compression. One compression scheme for video images is motion-JPEG which extends the Joint Photographic Experts Group (JPEG) digital image compression standard to videos by encrypting each frame in the JPEG format. The JPEG group created the ISO/IEC International Standard 10918-1 ITU-T Recommendation T-81 (hereinafter ‘JPEG’) to create a decoding/encoding standard. JPEG and Motion-JPEG are lossy compression standards and thus information is lost during the compression process. Motion-JPEG provides good per-frame compression levels but some of its compression steps, such as Huffman coding, are not always necessary and can slow performance.
The Moving Pictures Experts Group (MPEG) created another family of compression standards that include MPEG-1, MPEG-2, and MPEG-4 (ISO/IEC International Standards 11172, 13818, and 14496, respectively). The MPEG working group designed the MPEG standards to work for multi-media streaming and utilize block-based motion compensated prediction (MCP) to assist in compression. For many applications, MPEG improves upon the performance of motion-JPEG. For interactive streaming image applications, however, MPEG is not optimal. MPEG requires a server to generate multi-frame movies to achieve good compression levels, making it less useful for interactive applications that have frame-by-frame interactions. Instead, MPEG is designed and optimized for streaming predictable content, such as movies or other videos, to client or other user devices.
Interactive streaming image systems provide significant challenges to content providers desiring to distribute content from a server to multiple clients. Interactive streaming image systems typically receive user input for each frame so that each image frame is customized based on the latest user information. A map-based application, for example, might provide an image frame based on user position and heading so that the application could create an image showing the user what they would see at that position and heading. In another example, an application that displays a virtual view of what is behind an automobile may base its image on the current position, direction, and speed of the automobile. Because each frame must be recalculated based on new information, MPEG does not provide an efficient method as it does not achieve its best compression rates when working with single frames. Similarly, motion-JPEG does not provide any advantage when used with interactive streaming image systems as it applies a compression method that may be too resource-intensive for each image frame.
There is, therefore, a need for an effective mechanism for managing an interactive streaming image system. There is an even greater need for such a mechanism when a content provider desires to provide interactive image content to multiple client systems.